package com.hzy.ioc.impl;

import com.hzy.ioc.Paper;

/**
 * @Package: com.hzy.ioc.impl
 * @ClassName: TextPaper
 * @Author: 862982795
 * @CreateTime: 2021/07/02 21:16
 * @Description:
 */
public class TextPaper implements Paper {
    private int charPerLine = 16; //每行字符数
    private int linePerPage = 5;  //每页行数
    private String content = "";  //纸张中内容
    private int posX = 0;         //当前横向位置，从 0 到 charPerLine-1
    private int posY = 0;         //当前行数，从 0 到 linePerPage-1
    private int posP = 1;         //当前行数


    @Override
    public void putInChar(char c) {
        content += c;
        ++posX;
        // 判断是否换行
        if (posX == charPerLine) {
            content += Paper.newline;
            posX = 0;
            ++posY;
        }
        // 判断是否翻页
        if (posY == linePerPage) {
            content += "== 第" + posP + "页 ==";
            content += Paper.newline + Paper.newline;
            posY = 0;
            ++posP;
        }
    }

    @Override
    public String getContent() {
        String ret = this.content;
        // 补齐本页空行，并显示页码
        if (!(posX == 0 && posY == 0)) {
            int count = linePerPage - posY;
            for (int i = 0; i < count; i++) {
                ret += Paper.newline;
            }
            ret += "== 第" + posP + "页 ==";

        }
        return ret;
    }

    // 使用 set 方法注入每行字符数
    public void setCharPerLine(int charPerLine) {
        this.charPerLine = charPerLine;
    }

    // 使用 set 方法注入每页行数
    public void setLinePerPage(int linePerPage) {
        this.linePerPage = linePerPage;
    }
}
